关于spring boot使用redis的increment()方法自增问题

您所在的位置:网站首页 redis set incr 关于spring boot使用redis的increment()方法自增问题

关于spring boot使用redis的increment()方法自增问题

#关于spring boot使用redis的increment()方法自增问题| 来源: 网络整理| 查看: 265

需求是限制IP频繁访问某接口,用的方案是使用redis记录访问IP的值,先设定好初始值,每次访问自增,达到某限定值后,进行阻止。

用的是自定义工具类,使用spring封装的spring-data-redis进行操作,在对某key进行increment()方法时,报错:

redis ERR value is not an integer or out of range

代码逻辑如下:

Integer count = (Integer) redisUtil.get(ipAddress);//取得key的value if (count == null){ redisUtil.set(ipAddress,1,10); return false; }else if(count == 3){ return false; }else { redisUtil.incr(ipAddress,1); return false; }

 

 第一次进来,如果没有redis中没有数据,则设置key,value和time,key是ip, value初始值为1,有效时长为10秒。

如果没达到限制次数,则对key自增1。

redisUtil.incr()方法实现如下:

@Resource private RedisTemplate redisTemplate; //这里使用的是redisTemplate public void setRedisTemplate(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } /** * 递增 * @param key 键 // * @param by 要增加几(大于0) * @return */ public long incr(String key, long delta){ if(delta


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3